1. 缓冲流昨天学习了基本的一些流,作为 IO 流的入门,今天我们要见识一些更强大的流。比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等。这些功能更为强大的流,都是在基本的流对象基础之上创建而来的,就像穿上铠甲的武士一样,相当于是对基本流对象的一种增强。
1.1 概述缓冲流,也叫高效流,是对 4 个基本的FileXxx 流的增强,所以也是 4 个流,按照数据类型分类:
字节缓冲流:BufferedInputStream,BufferedOutputStream
字符缓冲流:BufferedReader,BufferedWriter
缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统 IO 次数,从而提高读写的效率。
1.2 字节缓冲流构造方法
public BufferedInputStream(InputStream in) :创建一个 新的缓冲输入流。
public BufferedOutputStream(OutputStream out): 创建一个新的缓冲输出流。
构造举例,代码如下:...
1. IO 概述1.1 什么是 IO生活中,你肯定经历过这样的场景。当你编辑一个文本文件,忘记了ctrl+s ,可能文件就白白编辑了。当你电脑上插入一个 U 盘,可以把一个视频,拷贝到你的电脑硬盘里。那么数据都是在哪些设备上的呢?键盘、内存、硬盘、外接设备等等。
我们把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为输入input 和输出output ,即流向内存是输入流,流出内存的输出流。
Java 中 I/O 操作主要是指使用java.io包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做作写出数据。
1.2 IO 的分类根据数据的流向分为:输入流和输出流。
输入流 :把数据从其他设备上读取到内存中的流。
输出流 :把数据从内存 中写出到其他设备上的流。
格局数据的类型分为:字节流和字符流。
字节流 :以字节为单位,读写数据的流。
字符流 :以字符为单位,读写数据的流。
1.3 IO 的流向说明图解
1.4 顶级父类们
输入流
输出流
字节流
字节输入流InputStream
字节输出流OutputStre...
1. 异常1.1 异常概念异常,就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是:
异常 :指的是程序在执行过程中,出现的非正常的情况,最终会导致 JVM 的非正常停止。
在 Java 等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java 处理异常的方式是中断处理。
异常指的并不是语法错误,语法错了,编译不通过,不会产生字节码文件,根本不能运行.
1.2 异常体系异常机制其实是帮助我们找到程序中的问题,异常的根类是java.lang.Throwable,其下有两个子类:java.lang.Error与java.lang.Exception,平常所说的异常指java.lang.Exception。
Throwable 体系:
Error:严重错误 Error,无法通过处理的错误,只能事先避免,好比绝症。
Exception:表示异常,异常产生后程序员可以通过代码的方式纠正,使程序继续运行,是必须要处理的。好比感冒、阑尾炎。
Throwable 中的...
1. 可变参数在JDK1.5之后,如果我们定义一个方法需要接受多个参数,并且多个参数类型一致,我们可以对其简化.
格式:
1修饰符 返回值类型 方法名(参数类型... 形参名){ }
底层:
其实就是一个数组
好处:
在传递数据的时候,省的我们自己创建数组并添加元素了,JDK 底层帮我们自动创建数组并添加元素了
代码演示:
1234567891011121314 public class ChangeArgs { public static void main(String[] args) { int sum = getSum(6, 7, 2, 12, 2121); System.out.println(sum); } public static int getSum(int... arr) { int sum = 0; for (int a : arr) { sum += a; } ...
1.不可变集合1.1 什么是不可变集合 是一个长度不可变,内容也无法修改的集合
1.2 使用场景 如果某个数据不能被修改,把它防御性地拷贝到不可变集合中是个很好的实践。
当集合对象被不可信的库调用时,不可变形式是安全的。
简单理解:
不想让别人修改集合中的内容
比如说:
1,斗地主的 54 张牌,是不能添加,不能删除,不能修改的
2,斗地主的打牌规则:单张,对子,三张,顺子等,也是不能修改的
3,用代码获取的操作系统硬件信息,也是不能被修改的
1.3 不可变集合分类
不可变的 list 集合
不可变的 set 集合
不可变的 map 集合
1.4 不可变的 list 集合123456789101112131415161718192021222324252627282930313233343536373839404142public class ImmutableDemo1 { public static void main(String[] args) { /* 创建不可变的List集合 ...
1.Map 集合1.1Map 集合概述和特点【理解】
Map 集合概述
1interface Map<K,V> K:键的类型;V:值的类型
Map 集合的特点
双列集合,一个键对应一个值
键不可以重复,值可以重复
Map 集合的基本使用
123456789101112131415public class MapDemo01 { public static void main(String[] args) { //创建集合对象 Map<String,String> map = new HashMap<String,String>(); //V put(K key, V value) 将指定的值与该映射中的指定键相关联 map.put("itheima001","林青霞"); map.put("itheima002","张曼玉"); map.put(&...
1.泛型1.1 泛型概述
泛型的介绍
泛型是 JDK5 中引入的特性,它提供了编译时类型安全检测机制
泛型的好处
把运行时期的问题提前到了编译期间
避免了强制类型转换
泛型的定义格式
<类型>: 指定一种类型的格式.尖括号里面可以任意书写,一般只写一个字母.例如:
<类型 1,类型 2…>: 指定多种类型的格式,多种类型之间用逗号隔开.例如: <E,T> <K,V>
2.Set 集合2.1Set 集合概述和特点【应用】
不可以存储重复元素
没有索引,不能使用普通 for 循环遍历
2.2Set 集合的使用【应用】存储字符串并遍历
1234567891011121314151617181920212223242526public class MySet1 { public static void main(String[] args) { //创建集合对象 Set<String> set = new TreeSet<>(); ...
1.Collection 集合1.1 数组和集合的区别【理解】
相同点
都是容器,可以存储多个数据
不同点
数组的长度是不可变的,集合的长度是可变的
数组可以存基本数据类型和引用数据类型
集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类
1.2 集合类体系结构【理解】
1.3Collection 集合概述和使用【应用】
Collection 集合概述
是单例集合的顶层接口,它表示一组对象,这些对象也称为 Collection 的元素
JDK 不提供此接口的任何直接实现.它提供更具体的子接口(如 Set 和 List)实现
创建 Collection 集合的对象
多态的方式
具体的实现类 ArrayList
Collection 集合常用方法
方法名
说明
boolean add(E e)
添加元素
boolean remove(Object o)
从集合中移除指定的元素
boolean removeIf(Object o)
根据条件进行移除
void clear()
清空集合中的元素
boolean conta...
常见的七种查找算法: 数据结构是数据存储的方式,算法是数据计算的方式。所以在开发中,算法和数据结构息息相关。今天的讲义中会涉及部分数据结构的专业名词,如果各位铁粉有疑惑,可以先看一下哥们后面录制的数据结构,再回头看算法。
1. 基本查找 也叫做顺序查找
说明:顺序查找适合于存储结构为数组或者链表。
基本思想:顺序查找也称为线形查找,属于无序查找算法。从数据结构线的一端开始,顺序扫描,依次将遍历到的结点与要查找的值相比较,若相等则表示查找成功;若遍历结束仍没有找到相同的,表示查找失败。
示例代码:
1234567891011121314151617181920212223242526272829303132public class A01_BasicSearchDemo1 { public static void main(String[] args) { //基本查找/顺序查找 //核心: //从0索引开始挨个往后查找 //需求:定义一个方法利用基本查找,查询某个元素是否存在 ...
今日内容
JDK7 时间相关类
JDK8 时间相关类
包装类
综合练习
Collection 集合
教学目标
能够使用日期类输出当前日期
能够使用将日期格式化为字符串的方法
能够使用将字符串转换成日期的方法
能够说出 8 种基本类型对应的包装类名称
能够说出自动装箱、自动拆箱的概念
能够将字符串转换为对应的基本类型
能够将基本类型转换为对应的字符串
能够完成课题上讲解的所有练习
第一章 Date 类1.1 Date 概述java.util.Date`类 表示特定的瞬间,精确到毫秒。
继续查阅 Date 类的描述,发现 Date 拥有多个构造函数,只是部分已经过时,我们重点看以下两个构造函数
public Date():从运行程序的此时此刻到时间原点经历的毫秒值,转换成 Date 对象,分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
public Date(long date):将指定参数的毫秒值 date,转换成 Date 对象,分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 197...